package com.enjoyor.soa.traffic.api.service.dubbo.ejcds;

import java.util.List;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;


/**
 * 资料附件
 * @author Administrator
 *
 */
public interface DubboEventSearchService {

	/**
	 * 警情查验
	 * @param strEventId 警情编号
	 * @param strKeyword 关键词
	 * @param strCoordX 经纬度X
	 * @param strCoordY 经纬度Y
	 * @param strReportTimeStart 开始时间（警情时间）
	 * @param strReportTimeEnd 结束时间（警情时间）
	 * @param strRange 查询范围
	 * @param filterEventIds 过滤编号（查询结果将不包含过滤的警情编号）
	 * @param page
	 * @param token
	 * @param systemKey
	 * @return
	 */
	public ResultPojo pageEventCheck(String strEventId, String strKeyword, String strCoordX, String strCoordY, 
			String strReportTimeStart, String strReportTimeEnd, String strRange, List<String> filterEventIds, Page page, String token, String systemKey);
	/**
	 * 获取警情流程
	 * @param strProcessId 流程编号
	 * @param strEventId 警情编号
	 * @param token 
	 * @param systemKey
	 * @return
	 */
	public ResultPojo listEventProcess(String strProcessId, String strEventId, String token, String systemKey);
	
	/**
	 * 获取单个警情全部信息，包含所有关联表单
	 * @param strEventId 警情编号
	 * @param token
	 * @param systemKey
	 * @return
	 */
	public ResultPojo singleEventInfo(String strEventId, String token, String systemKey);
	/**
	 * 获取警情列表
	 * @param strEventId 警情编号
	 * @param strReportTimeStart 开始时间（警情时间）
	 * @param strReportTimeEnd 结束时间（警情时间）
	 * @param strEventLevel 警情等级
	 * @param strEventSource 数据来源
	 * @param strEventType 警情类型
	 * @param strEventAddr 地址
	 * @param strEventContent 警情内容
	 * @param listEventStauts 警情状态（多选）
	 * @param strZoneId 区域编号
	 * @param listDeptId 部门编号
	 * @param minorStatus 警情辅助状态
	 * @param handleStatus 派发单状态
	 * @param token
	 * @param systemKey
	 * @return
	 */
	public ResultPojo listEventInfo(String strEventId, String strReportTimeStart, String strReportTimeEnd, 
			String strEventLevel, String strEventSource, String strEventType, String strEventAddr, String strEventContent,
			List<String> listEventStauts, String strZoneId, List<String> listDeptId, String minorStatus,
			String handleStatus, String token, String systemKey);
	
	/**
	 * 获取警情分页结果
	 * @param strEventId 警情编号
	 * @param strReportTimeStart 开始时间（警情时间） 
	 * @param strReportTimeEnd 结束时间（警情时间）
	 * @param strEventLevel 警情等级
	 * @param strEventSource 数据来源
	 * @param strEventType 警情类型
	 * @param strEventAddr 地址
	 * @param strEventContent 内容
	 * @param listEventStauts 警情状态
	 * @param strZoneId 所属区域
	 * @param listDeptId 所属部门
	 * @param minorStatus 辅助状态
	 * @param handleStatus 派发单状态
	 * @param page 
	 * @param token
	 * @param systemKey
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo pageEventInfo(String strEventId, String strReportTimeStart, String strReportTimeEnd, 
			String strEventLevel, String strEventSource, String strEventType, String strEventAddr, String strEventContent, 
			List<String> listEventStauts, String strZoneId, List<String> listDeptId, String minorStatus,
			String handleStatus, String keyword, Page page, String token, String systemKey);
	
	/**
	 * 获取警情分页结果(删减查询添加，添加关键字查询)
	 * @param strReportTimeStart
	 * @param strReportTimeEnd
	 * @param strEventType
	 * @param strKeyWord
	 * @param listEventStauts
	 * @param listDeptId
	 * @param page
	 * @param token
	 * @param systemKey
	 * @return
	 */
	public ResultPojo pageEventInfo(String strReportTimeStart, String strReportTimeEnd, String strEventType, 
			String strKeyWord, List<String> listEventStauts, List<String> listDeptId, Page page, String token, String systemKey);
	
	/**
	 * 获取警情受理单
	 * @param strEventId
	 * @param strHandleId
	 * @param strHandleType
	 * @param strDeptId
	 * @param token
	 * @param systemKey
	 * @return
	 */
	public ResultPojo listEventHandle(String strEventId, String strHandleId, String strHandleType, String strDeptId, String token, String systemKey);
	/**
	 * 获取派警单
	 * @param strEventId 警情编号
	 * @param strDispatchId 派警单编号
	 * @param token
	 * @param systemKey
	 * @return
	 */
	public ResultPojo listEventDispatch(String strEventId, String strDispatchId, String token, String systemKey);
	/**
	 * 获取反馈单
	 * @param strEventId 警情编号
	 * @param strFeedbackId 反馈单编号
	 * @param token
	 * @param systemKey
	 * @return
	 */
	public ResultPojo listEventFeedback(String strEventId, String strFeedbackId, String token, String systemKey);
	/**
	 * 获取警情流程详情（同时查询出流程关联的表单）
	 * @param EventId 警情编号
	 * @param operationType 操作类型
	 * @param token
	 * @param systemKey
	 * @return
	 */
	public ResultPojo listProcessDetail(String EventId, String operationType, String token, String systemKey);
	
	/**派警单 独立接口 start*****************************************/
	/**
	 * 根据警员编号和日期查询派警单
	 * @param strDate 派发单生成日期（yyyy-MM-dd）
	 * @param strPersonId 相关警员
	 * @param token
	 * @param systemKey
	 * @return
	 */
	public ResultPojo listEventDispatchByDay(String strDate, String strPersonId, String token, String systemKey);
	
	/**end*******************************************/
	
	/***********************************************************************************************************/
	/**
	 * 分页查询（为指挥调度系统内部调用特别开发）
	 * @param content 内容
	 * @param addr 地址
	 * @param reportTimeStart 警情时间（开始）
	 * @param reportTimeEnd 警情时间（结束）
	 * @param eventLevel 警情等级
	 * @param eventSource 警情
	 * @param eventType 警情类型
	 * @param zoneId 区域编号
	 * @param eventStatus 警情状态（单选）
	 * @param eventStatusList 警情状态（多选）
	 * @param handleDepts 派发单相关部门
	 * @param minorStatus 辅助状态
	 * @param handleStatus 派发单状态
	 * @param handleStatusList 派发单状态（多选）
	 * @param type 警情查询类型枚举(EnumSearchType)
	 * @param page
	 * @param token
	 * @param systemKey
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo pageEventInfoSearch(String content, String addr, String reportTimeStart, String reportTimeEnd, 
			String eventLevel, String eventSource, String eventType, String zoneId, String eventStatus, 
			List<String> eventStatusList, List<String> handleDepts, String minorStatus, String handleStatus, 
			String type, String keyword, Page page, String token, String systemKey);
	
	public ResultPojo listEventInfoSearch(String content, String addr, String reportTimeStart, String reportTimeEnd, 
			String eventLevel, String eventSource, String eventType, String zoneId, String eventStatus, 
			List<String> eventStatusList, List<String> handleDepts, String minorStatus, String handleStatus,
			String keyWord, String type, String token, String systemKey);
	
	/**************FOR APP****************************************************/
	public ResultPojo getEventByDispatchPolice(String typeId, String personId, String startTime, String endTime, 
			List<String> statusList, String eventIds, String token, String systemKey);
	
	public ResultPojo getEventForAppByEventId(String eventId, String token, String systemKey);
	
	public ResultPojo getTimeoutAvg();
}
